git常用命令

这篇博客详细介绍了Git和SVN的基本操作,包括初始化、分支管理、提交与还原、配置设置等。内容涵盖了从创建和切换分支,到合并与回退,以及忽略文件、查看历史记录和解决冲突的各种技巧。同时,还提供了SSH密钥配置、Git与SVN的克隆、提交和更新等操作。此外,博客还涉及到了如何使用图形工具如GitGUI和智能Git来辅助查看修改。对于开发者来说,这是一份全面的版本控制工具实践手册。
摘要由CSDN通过智能技术生成


GIT

初始化

## 配置账户
git config --global user.name "your_name"
git config --global user.email "your_email@example.com"

# 忽略权限
git config core.fileMode false
git config --global core.fileMode false

# 已跟踪文件忽略修改
git update-index --assume-unchanged <file>
git ls-files -m | xargs git update-index --assume-unchanged 
# 已跟踪文件取消忽略修改
git update-index --no-assume-unchanged <file>
git ls-files -v | grep '^h' | awk '{print $2}' | xargs git update-index --no-assume-unchanged 
# 未跟踪文件忽略修改
git status -u | grep $'\t' | sed 's/^[\t]//g' >> .gitignore

# 生成秘钥:
ssh-keygen -t rsa -C <mail>
ssh -T git@gitee.com 
# 将公钥复制到远程
cat ~/.ssh/id_rsa.pub
# 本地添加私钥
eval `ssh-agent -s`  #启动ssh-agent
ssh-add "私钥文件地址"  # 添加私钥到agent  如:ssh-add "c:/Users/xxx/.ssh/id_rsa" 

# 由http切换为git
git remote set-url origin git@git.zhkj-rd.cn:app/cms.git

分支操作

# 创建
git branch <branch-name>			# 创建分支
git checkout <branch-name>			# 切换分支
git checkout -b <branch-name>		# 创建并切换

git remote prune origin             # 清理失效的orign分支

# 上传
git push origin <branch-name>		# 将分支推送到远程
git push origin --set-upstream/-u <origin> <branch-name>

# 删除远程
git push origin :<branch-name>	
git push -d origin <branch-name>
# 删除本地
git branch -d/D <branch-name>

# 合并
git merge <branch-name>				# 合并分支

# 打补丁
git format-patch -1 [hash-id]
patch -p1 < xx.patch

# 同步其他分支修改
git cherry-pick <hashID>
git cherry-pick <hashID>:单独合并一个提交
git cherry-pick <start-hashID>..<end-hashID>(左开右闭,不包含start-hashID)
git cherry-pick <start-hashID>^..<end-hashID>(闭区间,包含start-hashID)

查看修改

# GIT GUI
qgit
gitk
smartGIT

# git查看修改
git diff file				# 查看工作区的修改
git diff --cached file		# 查看暂存区的修改
git show <hashID> --stat	# 查看本地仓库中修改了哪些文件
git show <hashID> file		# 查看本地仓库中具体某个文件的修改内容
git show <hashID>			# 查看本地仓库中所有文件的修改内容

# 查看log
git log 
git log -p  				# 查看修改内容
git log --stat 				# 查看修改文件
git log --author=<username>	# 查看某人的log
git log --pretty=oneline
git log --oneline			# 简洁显示
git log --oneline --graph --all	# 显示分支创建合并


# 配置bcompare

# difftool
git config --global diff.tool bcompare
git config --global difftool.prompt false

# mergetool
git config --global merge.tool bc
git config --global mergetool.bc.path "/usr/bin/bcompare"
git config --global mergetool.bc.trustexitcode true
||
git config --global merge.tool bcompare
git config --global mergetool.prompt  false


# 让git mergetool不再生成备份文件(*.orig,xx) 
git config --global mergetool.keepBackup false

# difftool
git difftool -y <file> 
git difftool --no-symlinks -d
git difftool --no-symlinks -d <hashID> <hashID>

# 查看哈希值
git rev-list HEAD

提交还原操作

# 还原文件
git checkout -- file		# 撤销工作区的修改
git reset HEAD file			# 撤销暂存区的修改
git reset --soft <hashID>	# 回退到某个版本,只回退了commit的信息
git reset --hard <hashID>	# 彻底回退到某个版本

# 还原提交
git revert <hashID>			# 生成一个新的提交,用于还原之前的修改

# 合并多个提交
git rebase -i HEAD~2	
# pick 		应用该提交,提交信息不变
# squash	应用该提交,与之前提交合并

# clean
git clean -dxf		# d(directory)  x(忽略.gitignore)  f(force)

常用配置

# alias
git config --global alias.st status -uno
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.mt mergetool
git config --global alias.dt "difftool --no-symlinks -d"
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

# git常用配置
git config --global core.quotepath false	# !! 路径 !! 避免把中文转成\xx\xx
git config --global color.ui true			# 显示颜色

# .gitignore
https://github.com/github/gitignore

# 空目录
find . -type d -empty  | awk -F' ' '{print "mkdir -p  " $0}'
find . -type d -empty -exec touch {}/.gitkeep \;

git常用操作

# 回退文件到制定hash id,回退之后需要commit
git checkout <hash> <filename>

git commit --amend -m "新的修改提交信息"

#使用git在本地新建一个分支后,需要做远程分支关联。如果没有关联,git会在下面的操作中提示你显示的添加关联
#关联目的是在执行git pull, git push操作时就不需要指定对应的远程分支,你只要没有显示指定,git pull的时候,就会提示你
# 其中,origin/remote_branch是你本地分支对应的远程分支;your_branch是你当前的本地分支
git branch --set-upstream-to=origin/<branch>

GIT-SVN

# 克隆
git svn clone -r12000:HEAD http://xx /home/xx --username=***
# 提交
git svn dcommit

# 更新本地代码仓库
git svn rebase


SVN

#取消忽略
svn add --no-ignore 

# svn status
svn st compatible_branch/  |  grep "\.c$"
svn st compatible_branch/  |  grep "\.h$"
svn st -q 
svn st ./ | grep "^?" | awk '{print $2}' | xargs rm -rf #删除为跟踪文件

# 把r7876修改的内容还原
svn merge -r 7876:7875 ./

# svn查看log
svn log -r 7876 -v      #某个版本日志
svn diff -r 7875:7876   #比较两个版本
snv log -l 10           #查看近10条日志

# 创建分支
svn cp -m "" http:// http://
# 切换分支
svn switch http://

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值