【软件构造】MacOS下利用git提交代码及相关问题

前言:

之前在windows平台下写过一篇关于git使用的文章,但是那篇blog写的太过于新手向,而且也没有给出过程中可能遇到的问题的解决方案。最近要用git提交学校课程的实验代码,故重开一篇,记录一下实验中能用到的git的相关内容(MacOS下),供大家参考,也供自己查阅。具体的提交过程就不再赘述,上一篇文章里写的还算清楚。能力有限,如有错误之处敬请指正。


参考内容:


git的使用

git的安装:

  • 对于苹果用户,只需要在terminal中输入git。如果之前没有安装过,则系统会提示你安装开发者命令行工具(好像是叫这个名),点击安装即可。(听说)这个git是和xcode绑定的, 但是本人在使用过程中并未产生任何异样或障碍。
  • 如果想安装独立版本,请点击git官网,界面与上一篇中Windows的界面完全一样。下载后即可安装。

git的使用:

初始化:

  • 设置commit时的用户名和邮箱:
git config --global user.name "(此处输入用户名)"
git config --global user.email "(此处输入邮箱)"
  • 查看git配置文件
cat ~/.gitconfig
  • 在本地初始化一个git新库:
git init

这里,init会在当前文件夹建立一个隐藏文件夹.git,通过

ls -a

可以查看。

  • 从远程clone一个库:
git clone http://........(你要clone的代码的http地址)(ssh也可)

利用git提交代码:

  • 将修改过的代码提交至缓冲区:
git add test
//(test为文件名,根据需要替换)
  • 将代码提交到本地代码库:
git commit -m "add test"
# 双引号中内容为提交时的备注,可自行替换。
  • 设置远程地址
git remote add origin http://......
  • 将代码提交到远程库:
git push origin master
# 此处提交到对应库的master分支上,如果有需要,
# 可将master改为目标分支名。需要输入用户名和密码。
  • 查看当前git仓库内容:
git status
  • 查看当前git缓冲区内容
git diff --cached
# 进入diff界面后,按q退出。
# 如果没有 --cached 参数,git diff 会显示当前你所有已做的但没有加入到缓存区里的修改。
# 如果此时你没有改完,可以退出继续对代码进行修改,之后加入到缓冲区(add)。

对于分支的处理:

  • 创建新的分支:
git branch exp
# 此处创建名为 exp 的分支,可根据需求修改名称
  • 查看当前分支情况:
git branch
  • 切换分支
git checkout exp
# 将分支切换到exp,可根据目标将 exp 改为目标分支名。主分支为 master。
  • 合并分支
git merge -m "merge exp to master" exp
# -m 内仍然是注释内容,根据需求修改
# 如果将分支合并到主分支,需要先将当前分支切换为主分支。
# 如果两个分支的文件内容有冲突,则冲突会写在 master 分支中,可通过diff查看。
# 通过diff查看时,不加 -cache 参数,可查看未提交到缓冲区的、有冲突的文件。
# 如果仍需 merge ,可手动修改 master 中文件内容。
  • 撤销分支的合并
git reset --hard HEAD^
  • 删除分支
git branch -d exp
# 删除名为exp的分支
# 参数为-d时只能删除已经合并过的分支。
# 如果此分支没被合并过,但需要强制删除,则将 -d 换为 -D 。

git日志:

  • 查看日志
git log
  • 日志统计:
git log --stat
  • 调整日志格式:
git log --pretty=oneline
# 根据需求可将 oneline 换位其他格式

遇到的问题:

问题一

fatal: refusing to merge unrelated histories
  • 问题原因为本地仓库与远程仓库相互独立,可能本地仓库的内容不是通过clone从远程仓库拿到的。
  • 解决办法:
git pull origin master --allow-unrelated-histories

问题二

hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
  • 问题原因为本地不包含远程仓库所有文件,push失败。
  • 解决方法可以先pull,在push
git pull origin master
git push origin master
我遇到的问题暂时就这么多,如果有新的会继续补充。欢迎评论区留言。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值