Git与Arc重用命令(不断更新)

本文总结了Git的常用命令,包括分支操作、提交管理、配置设置等,并提供了实用的技巧和示例,帮助开发者高效地使用Git进行版本控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Git常用命令小结

- git branch [name] 	//创建本地分支  
- git checkout [name] 	//切换本地分支  
- git add -u 	//只把修改的文件添加到索引库  
- git fetch 	//下载最新项目并且比较与最新项目的不同  
- git --help 	//查看帮助文档  
- git reset --hard 	//重置代码到分支之前的状态 
- git rebase [branchname]  	//合并分支(eg:git rebase orign/master)    
- git reset --hard commit_id 	//撤销commit到提交的id
- git tag -a v1.3 -m 修复xxxx		//当前分支打标签
- git push --tags     	//推送所有本地tag到远程服务器
- git branch -m oldname newname  	//重命名本地分支
- git push --delete origin branchname    	//删除远程分支
- git commit --amend 	//修改commit的内容
- git rm -rf --cached .   //删除已经add,但是没有commit的文件,只会移除git记录,不会删除真实文件

Git 默认初始化分支

# vim ~/.gitconfig
[init]
        defaultBranch = main

修改本地未提交的日志commit message

情况一:最后一次提交且未push

git commit --amend

情况二:旧的提交且未推送

假设commit是倒数第3次提交,这个可以使用git log查看

$ git log
commit b1b451d218cc23b6c769f373164f2b89cf54d0aa
Author: clcaza <clcaza@sina.cn>
Date:  Sat Mar 10 19:09:08 2018 +0800

 add :添加内容d

commit 04f0d1809d5d31cc6e930efcba47a5f3f7e93319
Author: clcaza <clcaza@sina.cn>
Date:  Sat Mar 10 19:08:24 2018 +0800

 add: 添加内容c

commit 94fc8feb916442d56b558d5c370f18f057298921
Author: clcaza <clcaza@sina.cn>
Date:  Sat Mar 10 19:07:08 2018 +0800

  添加内容a

commit fd517efa9faf6a5ec71d0eac38fbcfa0cd689f40
Author: clcaza <clcaza@sina.cn>
Date:  Sat Mar 10 19:06:21 2018 +0800

git rebase -i fd517efa9faf6a5ec71d0eac38fbcfa0cd689f40

它会打开一个编辑器,它会把最后前3次的提交显示出来,类似于:

pick 94fc8fe 添加内容a
pick 04f0d18 添加内容c
pick b1b451d 添加内容d

你会看到,它是按提交的顺序显示的,与git log显示的顺序相反。定位到你要编辑日志的那一行,把pick修改为edit,然后保存。

接着就是修改日志内容了

git commit --amend

完成编辑日志后,记得执行:

git rebase --continue

Rebase目的是打开提交的历史记录,让您选择要修改的内容。 Git会让你在一个新的分支修改内容。 git rebase --continue则是让你重新回到之前的分支。


修改远程仓库

  • git remote rm origin
  • git remote add origin git@git.oschina.net:fuwenjiang/FirstGit.git

##本地分支与远程分支关联

  git branch --set-upstream-to origin/devtest devtest

删除已经提交的文件

git rm -r --cache *.bak

git 多个commit合并

git rebase -i HEAD~2  

1.表示合并最近的2个提交

pick b76d157 b  
pick a931ac7 c  
  
# Rebase df23917..a931ac7 onto df23917  
#  
# Commands:  
#  p, pick = use commit  
#  r, reword = use commit, but edit the commit message  
#  e, edit = use commit, but stop for amending  
#  s, squash = use commit, but meld into previous commit  
#  f, fixup = like "squash", but discard this commit's log message  
#  
# If you remove a line here THAT COMMIT WILL BE LOST.  
# However, if you remove everything, the rebase will be aborted.  
# 

2.把pick修改成squash就可以去掉这个commit,合并到其他commit中了


Git整体配置命令小结

git config --global  user.name "Your Name Here"
git config --global  user.email your@email.com

#Git pull默认加上rebase功能

git pull时可以加上–rebase参数, 使之不产生Merge点, 保证了代码的整洁, 即: git pull --rebase

但每次都加–rebase似乎有些麻烦,我们可以指定某个分支在执行Git pull时默认采用rebase方式

$ git config branch.dev.rebase true

请使用以上命令时将 “dev” 修改成您自己本地的分支名字.

提示:

  必须cd到你工程的目录下,才能更改分支的配置;

  可以使用  git branch 命令, 列出您当前仓库中的所有本地分支;

如果你觉得所有的分支都应该用rebase,那就设置:

$ git config --global branch.autosetuprebase always

这样对于新建的分支都会设定上面的rebase=true了。已经创建好的分支还是需要手动配置的。


Git全局配置命令小结

  • 查看Git全局配置信息
git config -l   
  • 提交代码的log里面会显示提交者的信息
 git config --global user.name [username]
 git config --global user.email [email]
  • 配置git编辑器
 git config --global core.editor notepad++
  • 配置git比较工具
 git config --global merge.tool vimdiff
  • 在git命令中开启颜色显示
 git config --global color.ui true
  • 在git add解决乱码问题
    (eg:会显示形如274\232\350\256\256\346\200\273\347\273\223.png的乱码)
 git config --global core.quotepath false
  • 配置几个常用的log命令
    git lg1 和 git lg2 两条 命令,可以比较方便的查看 commit。
$ vim ~/.gitconfig

## insert 

[alias]
    lg1 = log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all
    lg2 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n''          %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' -10 --all
    lg = !"git lg1" 

注意:-10 代表最近的十条 ;–all代表所有分支

Using WinMerge as the git Diff/Merge Tool on Windows 64bit

[mergetool]
    prompt = false
    keepBackup = false
    keepTemporaries = false

[merge]
    tool = winmerge

[mergetool "winmerge"]
    name = WinMerge
    trustExitCode = true
    cmd = "/c/Program\\ Files\\ \\(x86\\)/WinMerge/WinMergeU.exe" -u -e -dl \"Local\" -dr \"Remote\" $LOCAL $REMOTE $MERGED

[diff]
    tool = winmerge

[difftool "winmerge"]
    name = WinMerge
    trustExitCode = true
    cmd = "/c/Program\\ Files\\ \\(x86\\)/WinMerge/WinMergeU.exe" -u -e $LOCAL $REMOTE

ARC命令小结

  • arc diff Review代码
  • arc land Review通过后提交代码(建议在提交前先git fetch一次解决冲突)

产生密钥#

Mac用户打开 Terminal,Windows用户打开 Git Bash。

首先检查是否有密钥存在:

$ ls -al ~/.ssh

如果你看到了类似下面的结果,说明已经有密钥了,直接前往第三步

id_dsa.pub
id_ecdsa.pub
id_ed25519.pub
id_rsa.pub

执行以下命令创建密钥:

$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

# coding 专用 
ssh-keygen -m PEM -t rsa -b 4096 -C "your_email@example.com"

程序会提示选择密钥保存位置,直接按回车选择默认地址即可。

接下来需要输入密钥的密码。

当你看到类似这样的文字,就成功啦:

Your identification has been saved in /Users/you/.ssh/id_rsa.
Your public key has been saved in /Users/you/.ssh/id_rsa.pub.
The key fingerprint is:
01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@example.com

添加密钥
找到刚才生成密钥目录的 id_rsa.pub (注意.pub)文件,把它的正文复制出来,你可以使用如下命令复制:

$ pbcopy < ~/.ssh/id_rsa.pub (Mac用户)
$ clip < ~/.ssh/id_rsa.pub (Windows用户)

然后访问项目中需要密钥的位置,填写一个合理的名字,并把密钥粘贴到里面即可。
辅助命令:

# 查看公钥的MD5
ssh-keygen -l -E md5 -f id_rsa.pub
# 查看RSA 公钥指纹
ssh-keygen -lf id_rsa.pub

#提交统计相关


###仓库提交者排名前 5(如果看全部,去掉 head 管道即可):

git log --pretty='%aN' | sort | uniq -c | sort -k1 -n -r | head -n 5

效果:

    160 xiaoming
     56 xiaohong
     45 ceshi
     43 开发

###仓库提交者(邮箱)排名前 5:这个统计可能不会太准,因为很多人有不同的邮箱,但会使用相同的名字

git log --pretty=format:%ae | gawk -- '{ ++c[$0]; } END { for(cc in c) printf "%5d %s\n",c[cc],cc; }' | sort -u -n -r | head -n 5 

结果

  160 xiaoming@163.com
   56 9797979797@qq.com
   45 kaixin@163.com
   43 thisisaname@163.com

###贡献者统计:

git log --pretty='%aN' | sort -u | wc -l

结果:

6

###提交数统计:

git log --oneline | wc -l

结果

324

git不区分文件名大小写问题

例如将README.md文件修改为readme.md,提交到仓库,发现没有任何改动可以提交,这是因为Git 默认对于文件名大小写是不敏感的。
使用以下命令来配置 Git 使其对文件名大小写敏感:

git config core.ignorecase false

此时提交会显示改动信息。
但是当你提交上去后,发现本地仓库没有任何改变,但是远程仓库的大写的文件README.md和小写的文件readme.md同时存在在远程仓库了。
此时clone和pull下来的文件却只有readme.md

最终的办法是先删除再添加,然后提交:

备份文件
删除文件git rm README.md(会把readme.md文件删掉)
把备份文件放入
添加文件git add README.md
提交git commit “…”、git push

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值