Git常用命令

Git常用命令

Git是一款分布式版本控制系统,由Linux之父Linus设计完成。Git的流行从github的火热程度可见一斑。

创建本地仓库

从Git进入某个恰当的目录下,执行git init命令,将该目录初始化为一个空的仓库。

  1. git add <file>添加文件,可反复多次使用,添加多个文件;
  2. git rm <file>删除文件;
  3. git commit将添加的文件提交到仓库,通常加-m "message for commit",进行说明;
  4. git status给出当前添加与提交的状态,经常会用到;
  5. git diff <file>查看文件<file>被做了哪些修改;

版本穿梭

Git可以很方便的帮助开发者回退或者前进项目版本。

  1. git log查看提交历史,加--pretty=oneline将提交信息压缩为一行显示,加--graph可以查看分支合并图,实际上,使用gitk命令查看更为直观全面;
  2. git reflog查看命令历史,可以查找到要回到的未来commit id
  3. git reset --hard commid_id可控制版本来回穿梭,HEAD指当前版本,HEAD^HEAD^^分别为上一版本和上上一版本,而上10个版本为HEAD~10;
  4. git checkout -- <file>放弃对为添加的文件的修改;
  5. git reset HEAD <file>放弃对已添加、但未提交的文件的修改;
  6. 若文件修改已提交,欲撤销提交,可以git reset --hard commid_id

远程仓库

通过ssh-keygen -t rsa -C "email@example.com"生成主机的秘钥,并将公钥(id_rsa.pub)拷贝到远端的KEY里,这样就具备了pullpush远端代码的权限。

  1. 关联一个远程仓库git remote add origin git@server_name:path/repo_name.git,这里的git@server_name:path/repo_name.git还可以为https://server_name/path/repo_name.git,只不过采用不同的协议;
  2. 首次推送git push -u origin master,后续均git push origin master
  3. 克隆远程仓库git clone git@server_name:path/repo_name.git

分支管理

Git可以快速而方便的在各分支间自由切换与合并。

  1. git branch查看分支;
  2. git branch <branch_name>创建新分支<branch_name>
  3. git branch -d <branch_name>删除<branch_name>分支;
  4. git checkout <branch_name>将当前工作切换到<branch_name>分支上;
  5. git checkout -b <branch_name>创建新分支、并切换到该分支上;
  6. git merge <branch_name><branch_name>分支合并到当前分支,该合并采用fast-forward,加--no-ff则会禁用fast-forward合并,这时将会生成一个commitgit merge --no-ff -m "message for merge" <branch_name>
  7. 当手头工作还未完成,但必须终止当前工作转而进行其他工作时,可执行git stash保留当前工作现场,然后git stash pop恢复现场;
  8. 丢弃一个没有被合并过的分支,可以通过git branch -D <branch_name>强行删除;
  9. 查看远程库信息,使用git remote -v
  10. 本地新建的分支如果不推送到远程,对其他人就是不可见的,从本地推送分支,使用git push origin <branch-name>,如果推送失败,先用git pull抓取远程的最新提交;
  11. 删除远程分支,首先删除本地分支git branch -d <branch_name>,然后执行git push origin :<branch_name>将远程仓库对应的分支删除;
  12. 在本地创建和远程分支对应的分支,使用git checkout -b <branch_name> origin/<branch-name>,本地和远程分支的名称最好一致;
  13. 建立本地分支和远程分支的关联,使用git branch --set-upstream <branch_name> origin/<branch_name>
  14. 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突,合并master分支前,请先拉取最新的代码。

标签管理

在Git中,标签通常用来标识版本信息,它与某一时刻的commit id相关联。

  1. git tag <tagname>用于创建一个新的标签,默认在HEAD上,也可以指定commit idgit tag <tagname> commit_id
  2. git tag -a <tagname> -m "message for tag"用于指定标签信息,git tag -s <tagname> -m "message for tag"用于PGP签名标签;
  3. git tag查看所有标签;
  4. git show <tagname>查看该标签的详细信息;
  5. git push origin <tagname>用于将本地<tagname>标签推送到远程仓库,git push origin --tags将本地所有标签推送到远程仓库;
  6. git tag -d <tagname>在本地删除标签;
  7. 若某一标签已push到远程仓库,则需要首先在本地删除该标签,然后,执行git push origin :refs/tags/<tagname>删除远程标签;

反悔

撤回已push到远程仓库的提交

假设当前工作在dev分支上,刚刚push了一次更改到远程仓库,但发现提交不符合要求,需要撤回,怎么办?

说明:此方法仅适用于当前无其他人提交更新

git reset --hard <版本号>
git push origin dev --force

修改已push到远程仓库的日志

假设当前工作在dev分支上,刚刚提交了一条带有 this is a wrong message 的日志,并且 push 到了远程仓库,但是 push 后却发现日志写错了,应当为 this is a right message ,怎么办呢?抓紧!

  • 修改日志

    git commit --amend

    会弹出刚刚 push 上去的那条错误的日志,修改成正确的,保存。
    vim 一样执行插入和保存。

  • 强制提交

    git push --force-with-lease origin dev

亲测搞定!
请确保没有其他人在你要修改的提交后做了提交。

Reference

廖雪峰的Git教程

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值