Linux下git的常用命令
1.配置用户信息
git config --global user.name “user_name”
git config --global user.email “email”
2.创建仓库或克隆已有的工程
- 初始化git版本库:
git init - 或者 直接克隆已有的工程:
git clone 工程链接 本地新建的文件夹
如:git clone http://user_name@xxx/xxx.git /local_dir/
然后按提示输入密码
3.常用命令
命令解释 | git命令 |
---|---|
查看分支 | git branch |
显示本地和远程的分支 | git branch -a |
从远程主机的最新内容更新到本地,用户在检查后决定是否合并(只更新,不合并) | git fetch |
更新origin主机的feature分支内容到本地的feature_new分支 | git fetch origin feature:feature_new |
切换分支 | git checkout 分支名【eg: git checkout master 切换到主分支】 |
新建分支并切换到新分支 | git checkout -b new_branch |
新建new_branch分支并同步 origin/feature_branch分支的内容 | git checkout -b new_branch origin/feature_branch |
将远程分支合并到本地 | git merge 远程分支 |
将远程分支的内容更新到本地分支 | git pull origin remote_branch:local_branch |
删除所有多余内容,保证当前是和远程分支完全相同的干净代码 | git clean -xdf |
查看修改的文件 | git status |
查看修改的内容 | git diff 文件名 |
添加文件到本地库 | git add test.c |
把当前目录下所有改动过的文件都add | git add -A 或 git add . |
添加被忽略【隐藏】的文件,如库文件 | cd到文件的目录,执行 sudo git add . -f |
提交文件到本地库(支持输入中文内容) | git commit -m “提交日志” |
显示提交记录 | git log |
push到远程库 | git push origin local_branch:remote_branch |
删除本地分支 | git branch -d branchName |
强制删除本地分支 | git branch -D branchName |
软回退 | git reset --soft commit_id【回退到commit_id版本,只回退commit信息,不会清除本地的修改】 |
硬回退 | git reset --hard commit_id【彻底回退到commit_id版本,新的修改会被清除,谨慎执行!】 |
只合并某次修改 | git cherry-pick commit_id |
4.打tag
已tag号为 0.0.1为例
(1)在本地打tag
git tag -a 0.0.1 -m “0.0.1版本”
(2)删除本地tag
git tag -d 0.0.1
(3)删除远程tag 0.0.1
git push origin :refs/tags/0.0.1【有管理员权限才行】
(4)在某个commit id打tag
git tag -a 0.0.1 commit_id -m “0.0.1”
(5)提交本地tag到远程【提交到远程主分支或其它分支都是这个】
git push origin 0.0.1
(6)更新远程tag到本地,并且包含本地已经打的tag
git fetch origin --tags
(7)切换到打tag的分支
git checkout -b 新分支名 tag号
5.常见情况的处理
(1)xxx.a 提交失败
因为库文件自动隐藏了
需要单独提交库:
$ cd 库所在的目录
$ git add xxx.a -f
(2)已经commit的,发现有问题,需要重新修改提交
步骤一:git reset --soft取消某次commit;
步骤二:git reset HEAD重置暂存区。
修改完后再重新提交。这样gitlab上只有一次提交记录,比较清晰。
(3)改完文件,用git status看到出现了许多自己没有修改的内容也显示改过
修改 .git下面的config
filemode = false //忽略文件权限变化
(4)解决冲突【执行git cherry-pick commitId的时候有时会提示有冲突】
代码中冲突的部分需要手动修改:
<<<<<<< HEAD
之前的部分
=======
新的部分
.>>>>>>>
再执行:
git add //添加重新修改过的文件
git continue //继续之前的cherry-pick