git常用命令

git常用命令

设置SSH Key

  1. 检查是否已经有SSH Key。  
      $cd ~/.ssh  
      如果说没有这个目录,就直接看第三步
  2. 备份
  3. 生成一个新的SSH。  
      $ssh-keygen -t rsa -C “wxxxxx@mmmm.com”  
      之后直接回车,不用填写东西。之后会让你输入密码。然后就生成一个目录.ssh ,里面有两个文件:id_rsa , id_rsa.pub
  4. 把这个SSH放到github上。用公钥。先在GitHub上注册一个用户,然后进入account-setting ,把id_rsa.pub的内容复制进去就可以了。
  5. 测试OK。输入命令:  
      $ssh -T git@github.com  
      ubuntu下会让你输入密码,输入完成后,会显示在GitHub上的用户名  
      Then:设置Git的帐户信息:  
      在终端里输入命令:  
    git config --global user.email “xxxxxx@ming.com”
    git config --global user.name “wxxxxx” 
      帮助文档上说不用token了。之后就可以开始建库,开始使用。

一、下载代码

git init
git clone ssh://git@10.25.25.20:2018/mnt/git_warehouse/mingsqure_1.git -b develop

二、分支操作

git branch -a 查看所有分支。
git branch new_branch 创建新的分支。
git branch -d branch 删除分支。
git checkout branch 切换当前分支。 -f 参数可以覆盖未提交
git checkout -t remotes/origin/…branch 切换到远程分支
git branch -d -r amlogic/kk-0108-secureos 删除远程分支

git merge 用于合并两个分支。

三、代码比较

git diff tag 比较 tag 和 HEAD 之间的不同。
git diff tag file 比较一个文件在两者之间的不同。
git diff tag1 tag2 比较两个 tag 之间的不同。
git diff hash1 hash2 【file】比较两个提交之间的不同。
git diff tag1 tag2 file or
git diff tag1:file tag2:file 比较一个文件在两个 tag 之间的不同

四、代码提交

git add 添加所有文件。
git rm 从 git 仓库中删除文件。
git ls-files -m 显示修改过的文件。
git ls-files 显示所有仓库中的文件。
git status 显示当前状态

git commit -a -m ”fix…“本地提交修改,不上传到远程服务器。
git commit -a -e 提交为解决冲突而修改的代码
git reset HEAD 或者 git reset HEAD~1 撤销最后一次提交。 只是仓库记录修改,本地文件不修
git reset --hard hash 撤销最后一次提交并清除本地修改。
git reset hash 回到 hash 对应的提交状态。
git checkout . 撤销当前目录的改动
git revert hash 恢复远程一次修改。
git cherry-pick hash 提交转移

用git reflog查看命令历史,以便确定要回到未来的哪个版本。
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史未来之间穿梭,使用命令
–hard 将本地版本库的头指针全部重置到指定版本,也会重置暂存区,并且会将工作区代码也回退到这个版本
–soft 将本地版本库的头指针全部重置到指定版本,且将这次提交之后的所有变更都移动到暂存区
–mixed(默认) 将本地版本库的头指针全部重置到指定版本,且会重置暂存区,即这次提交之后的所有变更都移动到未暂存阶段
git reset --hard commit_id。
git reset --hard HEAD^ 上一个版本就是HEAD,上上一个版本就是HEAD^
git reset --hard HEAD~100 当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
1.pull代码的时候会进行git merge操作导致冲突,需要将冲突的文件先resolve掉,再进行git add -u, git commit之后才能成功git pull。
2.如果想放弃本地的文件修改,可以使用git reset --hard FETCH_HEAD,FETCH_HEAD表示上一次成功时git pull之后形成的commit点。后面就可以成功git pull.
ps:git merge会形成MERGE-HEAD(FETCH-HEAD) 。git push会形成HEAD这样的引用。HEAD代表本地最近成功push后形成的引用。

方法1:
对于已经修改提交过的注释,如果需要修改,可以借助 git commit --amend 来进行。
进入终端,在当前分支上输入git commit --amend 会进入一个本文编辑界面,修改注释,然后保存退出,再重新push就可以了。
方法2:
leader不abandon代码,你回去之后,修改出问题的Java文件,修改好之后,git add 该出问题.java
然后 git commit –amend –no-edit,
最后 git push origin HEAD:refs/for/branches。

五、查看提交记录

git log file 查看一个文件的改动。
git log -p 查看日志和改动。
git log tag1…tag2 查看两个 tag 之间的日志。
git log -p tag1…tag2 file 查看一个文件在两个 tag 之间 的不同。
git log tag… 查看 tag 和 HEAD 之间的不同

git log -p -1 # 查看最近1次详细修改内容的diff
git tag -l # 查看所有标签
git log --pretty=oneline --decorate 带标签
git log --since=‘2017-08-01 15:44:06’ --oneline --reverse

六、增加.gitignore

增加.gitignore后
git clean -dxf 用于清除未跟踪文件。建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删
git clean -dnf 可以显示需要删除的文件,但不包括 被.gitignore 忽略的。
git reset --hard HEAD 用于清除跟踪文件的修改

七、取消被trace的文件

修改.gitignore
git rm -r --cached . 文件/目录 只是删除暂存区中的索引,并不删除工作区中的文件
git add . 将文件状态为untracked 然后添加到.gitignore ,
git commit -m “update .gitignore”

八、tag操作

git tag -a V1.2 -m ‘WebSite version 1.2’
git tag -l # 查看所有标签
git show V1.2
tag 远程推送:git push origin --tags
这样我们就把本地版本推送到了远程代码仓库.
如果刚刚同步上去,你缺发现一个致命bug ,需要重新打版本,现在还为时不晚.
删除标签:git tag -d V1.2
到这一步我们只是删除了本地 V1.2的版本,可是线上V1.2的版本还是存在,如何办?
这时我们可以推送的空的同名版本到线下,达到删除线上版本的目标:
git push origin :refs/tags/V1.2

九、patch 操作、

1 使用git format-patch生成所需要的patch:
当前分支所有超前master的提交:git format-patch -M master
某次提交以后的所有patch: git format-patch 4e16 --4e16指的是commit名
从根到指定提交的所有patch: git format-patch --root 4e16某两次
提交之间的所有patch: git format-patch 365a…4e16 --365a和4e16分别对应两次提交的名称
某次提交(含)之前的几次提交:git format-patch –n 07fe --n指patch数,07fe对应提交的名称
故,单次提交即为:git format-patch -1 07fe

git format-patch生成的补丁文件默认从1开始顺序编号,并使用对应提交信息中的第一行作为文件名。如果使用了-- numbered-files选项,则文件名只有编号,不包含提交信息;如果指定了–stdout选项,可指定输出位置,如当所有patch输出到一个文件;可指定-o

指定patch的存放目录;
2应用patch:
先检查patch文件:git apply --stat newpatch.patch
检查能否应用成功:git apply --check newpatch.patch
打补丁:git am --signoff < newpatch.patch

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值