Git 用法小结

Git是一个开源的代码管理的强大工具,能很好的实现处理团队协作开发时的代码管理功能。

下面将有关git的常用操作做一个总结:

1)合并两次commit的提交纪录流程:

第一步: git rebase -i HEAD~2  //2就代表当前git log中最顶端的两次commit

第二步:弹出vi的编辑窗口,看到两行已pick开头的message,此时需将合并的commit message之前的pick改为squash或简写s,则合并后的commit msg为此时保留的pick之后的那一行。编辑完后命令行执行:wq

第三步:弹出commit msg的编辑窗口,把不要的msg行删掉,执行:wq保存退出。此时执行git log可以看到本地已经合并了。

第四步:push的远端服务器。执行git push -f,同步到远端git服务器。

注意:如果执行完第一步之后,弹出的vi编辑界面不正常(比如无法执行命令行),则可以执行git config --global core.editor /usr/bin/vim,则可以畅快的编辑了。

2)git 查看某一次提交的修改了哪些文件:

git log --oneline --stat (除了log信息,还包含修改文件的明细)

git log --oneline (依次显示commit的log信息,仅一行)

3)git回退服务器提交:

git reset --hard <commit_id>

git push origin HEAD --force

4) git 修改commit信息

对于修改最近一次提交的情况:

git commit --amend即可弹出vi修改编辑界面,修改完成:wq退出即可,如果代码已经push的origin,就要推到远端,如果分支对应,则执行

git push -f

对于修改中间某一次的信息,比如倒数第三次:

git rebase -i HEAD~3,之后会出来三行

这个命令出来之后,会出来三行东东: 
        pick:******* 
        pick:******* 
        pick:******* 

将需要修改的行的pick改为edit或e,然后wq保存退出,此时git log会发现刚修改为edit的commit已变为最新的提交,

之后执行git commit --amend ,就跟上一种情况一样了。修改完成还要把顺序理顺过来,执行:

git rebase --continue ,如果已经push到远端,则还需执行git push -f

5)git 撤销某次提交(只回退某次commit,而本地代码不会改动)

git reset --soft commit-id

6)重命名本地分支:

git branch -m oldbranchname newbranchname

7)删除远程分支:

git push origin :old-local-branch-name

或者git branch -r -d origin/branch_name

如果在删除之后使用git banch -a命令依然可以看到远程分支,则可执行git remote show origin查看分支状态:

kongbo@baal:/workspace/kongbo/release/light-vinci-en$ git remote show origin
* remote origin
Fetch URL: /workspace/vinci/vinci-light.git/
Push URL: /workspace/vinci/vinci-light.git/
HEAD branch: master
Remote branches:
factory tracked
master tracked
normal tracked
normal_international tracked
refs/remotes/origin/normal_test stale (use 'git remote prune' to remove)
Local branches configured for 'git pull':
master merges with remote master
normal_international merges with remote normal_international
Local refs configured for 'git push':
master pushes to master (local out of date)
normal_international pushes to normal_international (up to date)

可以看到红色标注的分支是不存在的,需要执行提示命令清除掉相关记录

执行

kongbo@baal:/workspace/kongbo/release/light-vinci-en$ git remote prune origin
Pruning origin
URL: /workspace/vinci/vinci-light.git/
* [pruned] origin/normal_test

可以看到,该分支记录在远端被彻底清除。

8)本地分支推送到远程:

git push origin  new-local-branch-name: new-local-branch-name

$ git push -u origin master

上面命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。

不带任何参数的git push,默认只推送当前分支,这叫做simple方式。此外,还有一种matching方式,会推送所有有对应的远程分支的本地分支。Git 2.0版本之前,默认采用matching方法,现在改为默认采用simple方式。如果要修改这个设置,可以采用git config命令。

$ git config --global push.default matching
# 或者
$ git config --global push.default simple
9)git推送代码遇到权限问题,日志如下:

kongbo@baal:/workspace/kongbo/release/vinci-light$ git push
Counting objects: 33, done.
Delta compression using up to 24 threads.
Compressing objects: 100% (29/29), done.
Writing objects: 100% (33/33), 22.06 KiB | 0 bytes/s, done.
Total 33 (delta 11), reused 0 (delta 0)
remote: error: insufficient permission for adding an object to repository database ./objects
remote: fatal: failed to write object
error: unpack failed: unpack-objects abnormal exit
To /workspace/vinci/vinci-light.git/
! [remote rejected] normal_international -> normal_international (unpacker error)
error: failed to push some refs to '/workspace/vinci/vinci-light.git/'

遇到这种问题需要登录到服务器端git仓储的根目录,具体到上述的问题就是/workspace/vinci/vinci-light.git/

然后执行如下操作:

ssh登录服务器

cd/workspace/vinci/vinci-light.git/

sudo chmod -R g+ws *
sudo chgrp -R mygroup *

git config core.sharedRepository true

通常在执行完红字标示的命令就可以在local端推送了。

针对该问题的原因分析可参考http://www.91r.net/ask/6494913.html这篇文章。

10)查看某个文件的改动记录:

git log --pretty=oneline file

11)git 工程迁移:

  • a). 从原地址克隆一份裸版本库,比如原本托管于 GitHub,或者是本地的私有仓库
git clone --bare git://192.168.10.XX/git_repo/project_name.git
  • b). 然后到新的 Git 服务器上创建一个新项目,比如 GitCafe,亦或是本地的私有仓库,如192.168.20.XX
su - git
cd /path/to/path/
mkdir new_project_name.git
git init --bare new_project_name.git
  • c). 以镜像推送的方式上传代码到 GitCafe 服务器上。
    请确保已经添加了公钥到新的机器上
cd project_name.git
git push --mirror git@192.168.20.XX/path/to/path/new_project_name.git
  • d). 删除本地代码
cd ..
rm -rf project_name.git
  • e). 到新服务器上找到 Clone 地址,直接Clone到本地就可以了。
git clone git@192.168.20.XX/path/to/path/new_project_name.git

注意:个别公司比如我司是创建了一个gitlab group,步骤a和b的操作直接在网页界面就已完成,只需从第三步开始推送git仓储的代码开始即可,然后可以新建目录或者清空当前目录去从新地址load代码也就是步骤e。






















在使用IDEA进行Git操作时,你可以按照以下步骤进行配置和使用: 1. 首先,确保你已经安装了Git,并在Windows上将Git的可执行文件路径添加到系统环境变量中。 2. 打开IDEA,点击菜单栏中的File,然后选择Settings(或者Preferences)。 3. 在Settings窗口中,展开Version Control,然后选择Git。 4. 在Git配置页面中,点击Path to Git executable,并指定Git可执行文件的路径。这样IDEA就能够找到Git并与其进行交互。 5. 配置完成后,你可以在IDEA中使用Git的各种命令。例如,你可以使用Git Clone命令来克隆一个远程仓库到本地,使用Git Add命令将文件添加到暂存区,使用Git Commit命令提交更改,使用Git Push命令将本地更改推送到远程仓库。 此外,你还可以通过在IDEA中打开Git面板来方便地查看和管理你的Git仓库。你可以通过点击菜单栏中的View,然后选择Tool Windows,再选择Git(或者使用Alt + 9快捷键)来打开Git面板。在Git面板中,你可以执行各种Git操作,并查看当前仓库的状态。 总结起来,你可以通过在IDEA中配置Git可执行文件的路径,然后使用Git命令来进行各种操作,同时通过打开Git面板来方便地管理你的Git仓库。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [IDEA 使用 Git 操作详解](https://blog.youkuaiyun.com/wangmx1993328/article/details/109135323)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值