Git命令总结

git:在库文件夹下,创建当前文件夹问git库,git init;

添加文件到当前的git库中,git add MsgDemo;提交:git commit -m “init project file by git”,-m是msg,本次提交的消息内容,以便后期阅读;

git log (git reflog)查看提交日志,提交日志里边有commit id(3ef7945497233fcf2295d23f22c41c804a980a65),记录这个id用户回退到之前的版本或者跳到以后的版本:git reset –hard [commit id]; reset其实就是让git当前的版本节点指向所需的commit;

回退到上一个版本:git reset –hard HEAD^;

查看分支树形提交信息:git log –graph –pretty=oneline –abbrev-commit;

当前仓库的根文件夹属于工作区;

.git目录属于版本库,版本库中有自动分支master,还有暂存区,分支有一个指针head;

git status,查看当前库中文件的修改和提交状态,如果有以修改的必须提交到暂存区然后在提交到分支;git add 属于添加到暂存区,git commit –m属于推送到分支;没有添加到暂存区的文件不会提交到分支,所以git跟踪的是修改,不是文件;

将没有添加到暂存区的已经修改的文件回退到修改之前:git checkout – filename

git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区,这个撤回的标准是最后一次提交到分支的文件。如果将文件fileName已经放在了暂存区,那么可以用git reset HEAD finaName将文件退回到工作区,如果想撤回修改,那么用checkout将文件撤回。如果已经将文件commit到了分支,就不能再去reset到工作区了;

添加一个新文件:git add filename;git commit -m “msg”;

删除一个文件:git rm filename;不仅删除了工作区的文件,而且添加了暂存区的修改操作;如果想恢复,必须将节点中的文件操作退回到工作区,然后再将文件退回到操作区,git reset HEAD filename,git checkout – filename;

如果是rm fileName,那么直需要checkout;

远程仓库:

生成私钥公钥,ssh-keygen -t rsa -C youremail@example.com

其生成在Users/username/.ssh下

添加指定的远程项目:git remote add origin git@gitee.com:iashes/MsgDemo.git

删除指定的远程项目:git remote rm origin;

然后将本地库和远程库合并:

先从远程库拉下来,git pull –rebase origin master,然后合并:git push -u origin master

当远程库和本地库第一次进行合并之后,每次本地add,commit之后,运行git push origin master推送到远程就ok;

远程克隆仓库:git clone git@gitee.com:xxx/MsgDemo.git 或者https://

分支,master属于主分支,也称为自动分支;

创建分支:git branch newMas;

切换当前修改分支master为新创建的分支newMas:git checkout newMas;也就是将提交指针指向newMas分支;

(同时创建且切换分支:git checkout -b newMas);

切换到主分支:git checkout master;

查看当前分支:git branch;

将newMas分支合并到主分支master:git merge newMas;

删除分支:git branch –d newMas;

合并冲突:

Auto-merging readme.txt CONFLICT (content): Merge conflict in readme.txt Automatic merge failed; fix conflicts and then commit the result.

提示有文件内容冲突,git status查看当前冲突文件,

xxxxxxxxxMBP:MsgDemo Ashes$ git status
On branch master
Your branch is ahead of ‘origin/master’ by 2 commits.
(use “git push” to publish your local commits)
You have unmerged paths.
(fix conflicts and run “git commit”)
(use “git merge –abort” to abort the merge)
Unmerged paths:
(use “git add …” to mark resolution)
both modified: readme.txt
no changes added to commit (use “git add” and/or “git commit -a”)

readme.txt文件冲突了,重新编辑时看见冲突内容<<<<<  =======  >>>>>>>由这些字符分割,解决完冲突之后,add,然后commit即可;解决完冲突,再次提交,这次合并就算完成了,不需要重新合并了。

Git merge命令合并的分支,当删除次分支之后,不会保留合并的信息,那么用以下方法:

git merge –no-ff -m “merge with no-ff” newMas; 禁用了快速合并,然后在合并的同时创建了一个新的commit,通过-m可以查出历史记录;

暂存操作,暂存当前文件的修改操作,然后就可以去别的分支干别的事情,回头接着干:

git stash 暂存当前修改

git stash apply 恢复最近的一次暂存

git stash pop 恢复暂存并删除暂存记录

git stash list 查看暂存列表

git stash drop 暂存名(例:stash@{0}) 移除某次暂存

git stash clear 清除暂存

强制删除一个没有合并的分支:git branch –D newMas;

远程分支:

查看远程仓库的信息:git remote –v

推送其他分支到远程仓库:git push origin newMas;

备注,master分支是主分支,因此要时刻与远程同步;dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;至于其他分支,可推也可不推;

标签管理,发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。

为当前最新的commit打标签:git tag v1.0,为某个commit打标签:git tag v0.9 b1d93ec,查看当前分支下所有的标签,git tag;

创建有msg(说明信息)的标签,git tag -a v0.1 -m “version 0.1 released” 1094adb;

查看指定标签信息,git show v0.1

删除本地标签:git tag -d v0.1

推送当前标签到远程:git push origin v1.0

推送所有的本地标签到远程: git push origin –tags

删除远程标签,首先删除本地标签:git tag -d v0.9,然后删除远程标签,git push origin :refs/tags/v0.9

多人协作,首先git pull 远程的修改,然后add,commit本地库,最后push origin到远程;

不管push还是pull,只要提交到远程库,都需要在本地将分支切换到远程操作的分支,然后进行push和pull;

add多个文件 : git add .

检查本地存储库是否与远程服务器的最新更改保持一致:git fetch。

如果有一些文件提交不上去,例如.a,.pch文件,那么需要修改本地.gitignore文件,屏蔽当前后缀,再次提交。

Leave a Reply

Required fields are marked *