git使用总结

1.把目录初始化成仓库: git init
2.添加文件: git add readme.txt
3.把文件提交到仓库: git commit -m "wrote a readme file"
4.查看仓库当前动态: git status
5.查看差异: git diff readme.txt (工作目录区与仓库的区别)
6.查看历史记录: git log

7.回退版本: git reset --hard HEAD^
HEAD表示当前版本,上一个版本就是HEAD^,
8.回退到最新版本: git reset --hard 3628164
9,如果关闭电脑,忘记回退到最新的版本: git reflog用来记录你的每一次命令。
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

工作区(Working Directory)、 暂存区(stage或者叫index)、HEAD区
git跟踪的只是修改,并不是文件。。

10.丢弃工作区的修改: git checkout --file
两种意思:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

11.把暂存区的修改撤销掉,重新放回工作区: git reset HEAD file
git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

小结:
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

12.删掉文件:
在管理器中,把没用的文件删掉: rm test.txt
从版本库中删除该文件,那就用命令git rm删掉: git rm test.txt
提交文件:git commit

(先有本地仓库再建立远程仓库)
13.本地仓库与远程仓库关联: git remote add origin git@github.com:michaelliao/learngit.git(上面的michaelliao替换成你自己的GitHub账户名)
本地库的所有内容推送到远程库上: git push -u origin master(第一次推送,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来)
以后推送: git push origin master

(先有远程仓库再建本地仓库)
14.先建立远程仓库。
git clone git@github.com:michaelliao/gitskills.git (上面的michaelliao替换成你自己的GitHub账户名)

15.创建分支,然后切换到分支: git checkout -b dev
相当于: git branch dev && git checkout dev
16.查看分支: git branch
17.合并分支: git merge dev(git merge命令用于合并指定分支到当前分支)
18.删掉分支: git branch -d dev
当合并时出现冲突,必须手动解决问题,再提交。。
丢弃一个没有被合并的分支: git branch -D <name>强行删除

19.Git stash,把当前工作现场“储藏”起来,等以后恢复现场后继续工作:(用于保护工作目录的修改)
等bug修改好了后,查看保存的现场: git stash list
工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
另一种方式是用git stash pop,恢复的同时把stash内容也删了:

20.查看远程库的信息: git remote
显示更详细的信息: git remote -v
推送分支: git push origin dev

21.抓取分支:
要在dev分支上开发,就必须创建远程origin的dev分支到本地: git checkout -b dev origin/dev
推送分支: git push origin dev
推送失败,因为最新提交和你试图推送的提交有冲突,解决办法,先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送:
拉取分支: git pull
git pull也失败,原因是没有指定本地dev分支与远程origin/dev分支的链接,解决:git branch --set-upstream dev origin/dev
再pull。

总结:
多人协作的工作模式通常:
首先,可以试图用git push origin branch-name推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
这就是多人协作的工作模式,一旦熟悉了,就非常简单。

22.打标签: git tag v1.0(默认标签是打在最新提交的commit上的)
查看所有标签: git tag
给对应的commit_id打标签: git tag v0.9 6224937
注意,标签不是按时间顺序列出,而是按字母排序的。可以用git show <tagname>查看标签信息:git show v0.9
还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:git tag -a v0.1 -m "version 0.1 released" 3628164

23.删掉标签: git tag -d v0.1
因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。
如果要推送某个标签到远程,使用命令git push origin <tagname>: git push origin v1.0
一次性推送全部尚未推送到远程的本地标签: git push origin --tags

如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除: git tag -d v0.9
然后,从远程删除。删除命令也是push,但是格式如下: git push origin :refs/tags/v0.9

原文地址:https://www.cnblogs.com/Caden-liu8888/p/8017708.html