iT邦幫忙

0

remote GIT在VSCODE中實現的方法?

  • 分享至 

  • xImage

各位大大好
小弟在版本控管是使用GIT
而常常程式都是透過ftp傳送至遠端主機

這時候當開發多人專案的時候
git會沒辦法流暢的執行
現在的做法都是:
1.修改完程式
2.用FileZilla查看FTP此程式是否有更新過
3.若有先下載回來修正完後上傳 若無上傳程式至ftp
4.本地端git add&commit&push 到公共github repo
這樣的行為很不實際
因為若是有人不先檢查是否在遠端程式被更新過
很容易又發生蓋來蓋去的問題

由於遠端目前是沒有建立git的
為了達到以下情形
「當遠端程式被更動時 git也能同步更新」
也就是說
「當某個人想要在遠端更新某程式時 那隻程式若比他本地端的還新 會不讓他更新」
這次想要在遠端建立git(還是應該原本就這樣做!?)
而小弟常用的編輯器是VScode
他其中的git好像除了本地端和github就沒辦法連接到其他遠端
想問問各位大大有沒有什麼方法解決

我有上網找了幾個方法
第一個是git-ftp
這是一個元件 可以透過 command line達到我希望的做法
但是這個團隊有些人才剛開始寫程式
所以這種key指令的方式就暫不採用

第二個是vs code + git + sftp
參考來源是:
https://blog.csdn.net/u012814856/article/details/81947675
這個也應該是我想達成的
但在第六步我就卡住了
我沒有推送到遠端的選項
我猜這應該是要在遠端建立git才會出現!?
如果是這樣
那我就準備去跟管主機的人員申請主機安裝git了

不知道我問的有沒有清楚@@
小弟平常也只使用git做個人用
如果流程上有什麼缺失麻煩大大們提點

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
2
㊣浩瀚星空㊣
iT邦大神 1 級 ‧ 2020-06-11 15:45:48
最佳解答

教教你簡易的git處理方式。

基本上簡單點是直接去github上申請一個庫來管理。
如果想要內部使用的話。

可以用git的命令自已建立一個庫來處理。

git init --bare 目錄

要注意一件事,用這樣的命令它只會單純生成一個git倉庫。
而非 .git 那樣的記錄方式。
我個人的使用習慣是另外開一個git目錄後。再將要開的倉庫放在這個目錄下的目錄。
所以如果是要建一個 abc.com 的倉庫。
我會下如下的命令

cd /git
git init --bare abc.com

這樣你就完成了空倉庫的應用。
再來就是解決遠端連結的問題了。
一般linux的系統我會建議用ssh連結的方式。

如git庫的機器ip是 192.168.0.100 好了
則先 clone 下來

git clone ssh://192.168.0.100/git/abc.com

不過如果是windows系統怎麼辦??

一般如果是內部網域的環境下。我會建議可以用網芳來處理。
畢竟要設定為網頁應用或是ftp應用又有點麻煩。

當然啦,如果有安全性問題的話。一般還是建議不要用網芳就是了。

以上是git庫簡單的處理方式。

看更多先前的回應...收起先前的回應...
st474ddr iT邦新手 2 級 ‧ 2020-06-11 15:58:01 檢舉

感謝大大的回答 受益良多~
大大說的跟我查到的一篇文很像~
https://www.nvda.org.tw/discussion/ui=100200tm=1960006712
基本上我是不希望丟到github上
就只是想單純在遠端和本地做git

我個人的使用習慣是另外開一個git目錄後。再將要開的倉庫放在這個目錄下的目錄。

請問大大這樣的作法
目的是要當作大家一起工作的共享庫嗎?

再來就是解決遠端連結的問題了。

我是linux系統的
所以我也是用SSH的方式
之後希望可以用在VScode中其他的插件 操作就是了~

是的,跟你找到的那篇一樣的做法。只是他是用repo,我則是叫git。
這樣的做法就是一個共享庫。其實跟你在github建庫是一樣的道理。
只是github的介面更多元化,更人性化操作。

我這做法是純手工的做法,簡單的處理。如果還要再加上限制就會比較累了。

vsCode沒意外我記得只要用他的git插件就很能用了。
我記得我之前用好像用了一個整合包就全都有了。
雖然我現在換成ide的編輯器就是了。(直接就有支援)

st474ddr iT邦新手 2 級 ‧ 2020-06-11 16:39:27 檢舉

我已經成功git remote 以及clone了
不過大大我還有些不明白
我clone下來的資料夾中有遠端的.git資料夾
這是不是要寫一個.gitignore把他忽略阿
不然會跳有兩個master

共享庫 就代表大家程式應該要往這資料夾裡面丟?

而且VScode的git要跟遠端連
好像要設定ssh無密碼
這我之前也有爬到文過
好像有點麻煩QQ

是可以教你另一種連線方式啦。
ssh://user:password@192.168.1.100/git/abc.com

其實還有很多細節要調整的。
不過我只帶入門就好了,其它你就自已試試了。

我當初玩很久。本打算再自已掛一個gui出來。
但突然發現aws本身就有這東西了。(其實之前一直不知道aws那邊就有了)。
就果斷換掉了。

st474ddr iT邦新手 2 級 ‧ 2020-06-11 17:07:36 檢舉

是可以教你另一種連線方式啦

我是ssh倒是可以連過去
主要是vscode裡面的git push的時候 沒辦法丟密碼過去
所以導致我沒辦法push
查了幾個都是要用ssh-keygen 這種方法

我是commit都用完後下
git push origin master
可是這時候他都會彈錯誤給我

Permission denied, please try again.
Permission denied, please try again.
user@dev.com: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.

我有點不懂了
add跟commit應該是你自已本地的git。
為何會需要密碼??

你是否誤會了什麼??

st474ddr iT邦新手 2 級 ‧ 2020-06-12 10:12:46 檢舉

大大 的確是我誤會了什麼
我昨天在clone 下來前 有先用vscode建立一個本地端的.git
這樣導致我昨天無法找到遠端的git repository
我把它刪掉 就沒有發生其他問題

現在遇到的就是
push到主機端 要輸入密碼
但vsCode中的沒地方輸密碼 所以導致產生如此錯誤
我還在找方法QQ

但我用git bash是可以push到主機端的
只是請問git push後為什麼主機端沒有相同檔案產生阿

clone先建立本地git??
產生檔案??

那個....你git沒學好喔。雖然我自已也好不到哪去就是了。
一般clone一定得要在一個空的目錄內,或是指定建立一個空目錄。
所以不會有所謂的本地端git的問題才對。

你...好像還一直在遠端同步更新的觀念內。
放棄掉吧。

st474ddr iT邦新手 2 級 ‧ 2020-06-12 11:39:13 檢舉

大大確實我深知自己的不足
這次專案可能就先不使用 僅我自己練習測試用
我會再去找學習資源
感謝大大細心的回答

「僅我自己練習測試用」
這個就是所謂的本地git。

這部份你已經會了。簡單來說,你目前一定沒有遠端的git。
也就是remote端。

剛好我只打一半就沒空發送出去,本來要告訴你資源庫的事。

資源庫並不像你開發的樣子。會直接看到程式碼。
也就是你會看不到.git這樣的東西。
你可以將資源庫視為一種記錄的東西。

如果要更明白的說法。
用 「git init --bare」建出來的東西,
你可以將其視為一個git的server。
並非是你平常看到的程式碼根目錄下多了一個.git的樣子。

st474ddr iT邦新手 2 級 ‧ 2020-06-12 13:32:17 檢舉

先感謝大大繼續的補充
我真的是蠻想搞懂的QQ

你目前一定沒有遠端的git

在這次專案想嘗試之前 我只用過github來當遠端的git repository
確實是沒有嘗試過用server來當

只是我不懂的地方在於
我已經在server建了 bare repository
也在local端clone此專案下來了
在早些時候也成功用git bash 成功 push 一個新的 a.txt
但是server端卻沒有出現一個新的a.txt

以下是我的步驟

-Server(user@dev.com/home/administration/)
    $ mkdir repo
    $ cd repo
    $ git init --bare
    Initialized empty Git repository in /home/administration/repo/
    $ ls -a
    .  ..  branches  config  description  HEAD  hooks  info  objects  refs
-local
    $ git clone user@dev.com:/home/administration/repo
    warning: You appear to have cloned an empty repository.(repo directory has been created at local)
    $ cd repo
    $ git remote add origin user@dev.com:/home/administration/repo
    $ git remote -v
    origin  user@dev.com:/home/administration/repo (fetch)
    origin  user@dev.com:/home/administration/repo (push)
    $ git push origin master
    user@dev.com s password:
    Enumerating objects: 3, done.
    Counting objects: 100% (3/3), done.
    Writing objects: 100% (3/3), 211 bytes | 211.00    KiB/s, done.
    Total 3 (delta 0), reused 0 (delta 0)
    To user@dev.com:~/home/administration/repo
    * [new branch]      master -> master

不知道這些跟大大之後講的話有沒有關係

資源庫並不像你開發的樣子。會直接看到程式碼。

其實我不太懂這邊程式碼 大大指的是什麼
git init --bare 出來確實是沒有.git
有好幾個資料夾和檔案

因為 git init --bare 建出來的並不是一個開發/生產環境。
它認真來說算是一個倉庫。
就如我上面說的,它就像是git的中央管理server的觀念。

你自已的.git都是要跟他對應的。
其實那個倉庫,你可以進去你自已的.git看看。長的會有點一樣。

依我的例子來說明好了。
其實我自已的server上。有www的開發測試環境跟git倉庫環境。
我自已有有自已的git。

一般我跟我的同事都有各自開發的項目。平常是在自已的電腦檢查開發自已的元件。完成了就 push 上去git倉庫。

要做測試就去開發環境去 pull 我git倉庫。
等多人測試後沒問題,負責專案的人員會將目前git倉庫內的開發分支合併到master內。

st474ddr iT邦新手 2 級 ‧ 2020-06-12 14:58:32 檢舉

我又查了一下文章
https://hackmd.io/@hbdoy/BJz0V5tv8

我了解了大大想告訴我的
以及為什麼push成功仍然沒有檔案
原因就是沒有"工作區"

我現在改用一般的git倉庫
只要開branch就能達成我要的需求
可以同步紀錄並傳送檔案

只是和VScode整合還是一個坎就是QQ

是的!
一般這個倉庫是有其必要性的。
你可以不用擔心這個庫被人 add 或是 commit
只能透過其它的git pull上來的東西。

早期我也很糾結這樣的必要性。
為何不要就將其當我測試開發的工作區就好。
為何還得要再多這個庫幹啥?

理由就是人為因素。
因為工作開發區,你一定得要開放權限。給人進來改檔案。
其中就會有可能發生人為的問題存在。
其實包含我在內也會。
(曾經手賤砍了git,造成整個版本都消失)

保留倉庫,你可以不需要開放任何可以直接修改他的。

至於vscode整合。其實我當時就的他的git不好操作。
我才會棄用他的。

不過有人是用其它的git工具處理。
有沒有整合到vscode到不是那麼重要就是了。
我現在用的是ide編輯器。所以沒這方面的問題。

st474ddr iT邦新手 2 級 ‧ 2020-06-13 09:50:42 檢舉

很感謝大大
聽了大大的回答
爬爬文真是受益良多
我再找書慢慢看

4
dragonH
iT邦超人 5 級 ‧ 2020-06-11 14:49:46

這次想要在遠端建立git(還是應該原本就這樣做!?)

本來應該就要這樣

要寫新功能就開一個 branch

完成後丟 pull request

這時如果有 conflict

就要解完才能推

他其中的git好像除了本地端和github就沒辦法連接到其他遠端

我就用過 bitbucket

應該沒這問題

看更多先前的回應...收起先前的回應...
st474ddr iT邦新手 2 級 ‧ 2020-06-11 15:51:00 檢舉

看來就是主機要有git才行哈哈

我就用過 bitbucket

我來用用看

我是直接用aws的code什麼的。
要收費的,畢竟我們的東西並不太適合放外部。所以也不想用github跟bitbucket。

dragonH iT邦超人 5 級 ‧ 2020-06-11 16:24:49 檢舉

codebuild 跟 codecommit 嗎

他比較好用沒錯

還有 codepipeline

可以 CI/CD 一條龍

嗯,沒錯。
只是....我現在還不太會用他的建構。嗚嗚嗚。
主要是用在負載平衡上還搞不定。單機倒是沒啥問題。
現在沒空研究,到時還要再玩一次。
我也才剛用不到2個月。

之前的確是放在公司的server上跑。

1
nansen
iT邦新手 2 級 ‧ 2020-06-11 22:53:12

既然有共用的git repo應該是讓CI去執行CD佈署的工作,統一推到repo由CI上傳到FTP而不是人工上傳,因為需要上傳到repo了所以有衝突就會推不上去

自己用gitlab + gitlab-runner做CI跑ansible佈署docker,不過ansible可以執行cmd命令,拿來跑FTP用來上傳不是問題

st474ddr iT邦新手 2 級 ‧ 2020-06-12 10:13:37 檢舉

這些觀念我都太薄弱
感謝大大指點
我會略加研究

我要發表回答

立即登入回答