Git操作的基础命令

Git的简介:

Git是目前世界上最先进的分布式版本控制系统。区别于集中式svn和cvs,分布式版本控制系统没有“中央服务器”,每个人的电脑上都是一个完整的版本库。特点:不需要联网、安全性高、速度快、协作更便捷。


一、创建版本库:

mkdir learngit     新建一个目录

cd learngit        跳转到这个目录下
git init           把这个目录变成Git可以管理的仓库
编写readme.txt文件放在learngit目录
git add readme.txt 把文件添加到仓库
git commit -m "wrote a readme file" 告诉Git,把文件提交到仓库
git status         命令看仓库当前的状态
git diff readme.txt 看具体修改内容

总结:
随时掌握工作区的状态,使用git status命令。
如果git status告诉你有文件被修改过,用git diff可以查看修改内容。


二、版本回退和管理修改

git log             查看历史记录
git log --pretty=oneline 简化记录显示
一大串类似3628164...882e1e0的是commit id(版本号)
用HEAD表示当前版本
上一个版本就是HEAD^,上上一个版本就是HEAD^^,
当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

git reset --hard HEAD^ 回退上一版本
git reset --hard (commit id)(版本号)
cat readme.txt         显示内容

忘记commit id可用relog查
git reflog             用来记录你的每一次命令
git diff HEAD -- readme.txt 命令可以查看工作区和版本库里面最新版本的区别

总结:
每次修改,如果不add到暂存区,那就不会加入到commit中


三、撤销修改和删除文件

git checkout -- readme.txt 在工作区的修改全部撤销
git reset HEAD file  可以把暂存区的修改撤销掉(unstage),重新放回工作区

总结:
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

git rm 用于删除一个文件

ls -ah 查看隐藏目录


四、远程仓库:

ssh-keygen -t rsa -C "[email protected]" 创建SSH Key,一路回车
成功后,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件
id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人

https://github.com/settings/keys 谷歌浏览器打开
在这个网站中添加SSH keys 用id_rsa.pub公钥。

使用SSH Key是因为GitHub需要识别出你推送的提交确实是你推送的

本地仓库关联远程库heshushun/learngit.git,远程库的名称:origin
git remote add origin [email protected]:heshushun/learngit.git

把本地库的所有内容推送到远程库上
git push -u origin master  把当前分支master推送到远程,并将本地master和远程master关联

git push origin master  后面推送远程不需要再加-u

从远程库克隆到本地库
git clone [email protected]:heshushun/gitskills.git


五、分支管理:
git checkout -b dev  创建dev分支,然后切换到dev分支
git checkout命令加上-b参数表示创建并切换
git branch           命令查看当前分支

git checkout master  切换回master分支

git merge dev        把dev分支的工作成果合并到master分支上

git branch -d dev    删除dev分支

因为创建、合并和删除分支非常快,所以Git鼓励使用分支完成某个任务,合并后再删掉分支

总结:
查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>


git log --graph    命令可以看到分支合并图。

git stash  可以把当前工作现场“储藏”起来

git merge --no-ff -m "merged bug fix 101" issue-101  合并

git stash list 命令查看刚才的工作现场

git stash apply恢复 但是恢复后,stash内容并不删除
git stash pop  恢复工作现场的同时把stash内容也删了

git branch -D feature-vulcan 强行删除分支 -D
git branch -d feature-vulcan  如果分支修改没有合并是不能删除的

git remote  查看远程库的信息 git remote -v 看更详细

git push origin dev 推送 dev分支


六、多人协助:
git checkout -b dev origin/dev 其他本地仓库想再dev上开发,需创建远程origin的dev分支到本地
git commit -m "add /usr/bin/env"
git push origin dev    修改后 push到远程

若对方提交,你也提交同文件会冲突,会推送失败。
可先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送

git pull  将origin/dev抓下来

如果失败,因为没有指定本地dev分支与远程origin/dev分支的链接
git branch --set-upstream dev origin/dev  设置dev和origin/dev的链接:

然后再pull,本地合并解决冲突后,再push


七、标签管理:
git tag v1.0 新建标签v1.0

git log --pretty=oneline --abbrev-commit 找历史提交的commit id

git tag v0.9 692fdc3  指定 692fdc3 commit id 的标签是v0.9

git show v0.9  查看标签信息

git tag -d v0.9 删除标签

git push origin v1.0 推送某个标签到远程

git push origin :refs/tags/v0.9  删除一个远程标签




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章